package basic;
//方法：模拟+位运算 3 * 4 可以看做 4 + 4 + 4，
// 即 A 个 B 或 B 个 A 相加，让大的那个数当加数显然更节省时间一些，
// 当小的数减为 0 时，终止循环。因为 3 * 4 可以看做 4 + 2 * 4 = 4 + ( 4 << 1 )，
// 因此还通过判断小的那个数是否为偶数来进行移位运算

public class Interview0805 {

    public int multiply(int A, int B) {
        //保证A比B小
        if(A > B){
            return multiply(B, A);
        }
        //A为0
        if(A == 0){
            return 0;
        }
        //A能被2整除 右移以为代表除以2  左移一位代表乘以2
        if(A % 2 == 0){
            return multiply(A >> 1, B) << 1;
        }
        //递归
        return B + multiply(A-1, B);
    }

    public static void main(String[] args) {

        Interview0805 interview0805 = new Interview0805();
        System.out.println(interview0805.multiply(3, 5));


    }

}
